<?php

/**
 * Created by PhpStorm.
 * User: GZJ
 * Date: 2017/7/28
 * Time: 19:13
 */
namespace Home\Controller;
class IndexController extends DhtController{

    /******************ajax取出当前会员等级下的商品价格******************/
    public function ajaxGetMemberPrice(){
            $goods_id = I('get.goods_id');
            $gModel = D('Admin/goods');                             //S生成会员积分等级的价格模型 把商品的id传过去
        echo $gModel->getMemberPrice($goods_id);               //当只返回一个字符串或者一个数组的时候 不需要转json

    }
    
    public function index(){
        //测试高并发 如果有缓存就不会执行这里的代码 如果没有回执行 所以测试当缓存时间到并要去数据库取数据的一瞬间  如果有高并发访问量
//        $file = uniqid();
//        file_put_contents('.././ceShi/'.$file,'abc');

        //取出商品抢购 热销 新品等商品方法
         $goodsModel = D('Admin/Goods');
        $goods1 = $goodsModel->getRromotegoods();
        $goods2 = $goodsModel->getRecgoods('is_new');
        $goods3 = $goodsModel->getRecgoods('is_hot');
        $goods4 = $goodsModel->getRecgoods('is_best');
        // 取出被推荐分类的信息
        $catModel = D('Admin/Category');
        $floorData =$catModel->getFloor();
//        echo'<pre>';
//        var_dump($floorData);exit();

        $this->assign(array(
            'floorData'=>$floorData,
            'goods1'=>$goods1,
            'goods2'=>$goods2,
            'goods3'=>$goods3,
            'goods4'=>$goods4,
            'page_title'=>'京西商城',
            'cat1'=>'1',
            'page_keywords'=>'商城',
            'page_description'=>'商城',

            ));
        $this->display();
    }

    public function goods(){

        //线获取传过来的商品id
        $id = I('get.id');
        //这里不需要用到后台的模型的时候 可以不要加admin 直接访问goods 即使前台模型里没有这个goods模型
        $gModel = D('Goods');
        //找到这个商品的详细信息 和取分类的所有上级分类一样 先取出来 才能找到再商品表里的分类id
        $info = $gModel->find($id);
        $catModel = D('Admin/category');
        //再根据商品表的分类id 放到后台分类模型的查找所有上级分类的方法里 面包屑
        $catPath = $catModel->parentPath($info['cat_id']);
        $catPath = array_reverse($catPath);
//        echo'<pre>';
//        var_dump($info);
//        echo '<hr>';
//        var_dump($catPath);exit();
        /**********************取出商品相册里的商品图片******************************/
        $gpModel = D('goods_pic');
        $gpData = $gpModel->where(array('goods_id'=>array('eq',$id)))->select();
        /**********************取出商品属性信息******************************/
        header('Content_type:text/html;charset=utf-8');
        $gaModel = D('goods_attr');
        $gaData = $gaModel->alias('a')
            ->field('a.*,b.attr_name,b.attr_type')
            ->join('LEFT JOIN __ATTRIBUTE__ b ON a.attr_id = b.id')
            ->where(array(
                'a.goods_id'=>array('eq',$id)))
            ->select();
        /*********************分离属性***********************/
        $checkboxAttr = array();   //这个是唯一
        $radioAttr = array();      //这个是可选
        foreach($gaData as $v){
            if($v['attr_type'] == '唯一'){
                $checkboxAttr[] = $v;
            }else{
                $radioAttr[$v['attr_name']][] = $v;
                //把同一个类型属性的放在一起  二维转三维
            }
        }
//        echo'<pre>';
//        var_dump($checkboxAttr);exit();
        /**********************取出商品的会员价格******************************/
        $mpModel = D('member_price');
        $mpData = $mpModel->alias('a')
            ->field('a.price,b.level_name')
            ->join('LEFT JOIN __MEMBER_LEVEL__ b ON a.member_id = b.id')
            ->where(array(
                'a.goods_id'=>array('eq',$id)))
            ->select();

        $viewPath = C('IMAGE_CONFIG');
        $this->assign(array(
            'checkboxAttr'=>$checkboxAttr,
            'radioAttr'=>$radioAttr,
            'gpData'=>$gpData,
            'info'=>$info,
            'catPath'=>$catPath,
            'viewPath'=>$viewPath['viewPath'],
            'mpData'=>$mpData,
        ));
        $this->assign(array(
            'page_title'=>'商品详情页',
            'cat1'=>'0',
            'page_keywords'=>'商品详情页',
            'page_description'=>'商品详情页',
        ));
        $this->display();
    }

    /*******************接收ajax传过来的浏览的商品id**********************/
    public function displayHistory(){
        $gid = I('get.id');
        echo $gid;
        //先从cookie中取出浏览历史id的数组                  ----------但是cookie中不能存数组 所以当有数据的时候 序列化一下用函数unserialize
        /***********************为什么放在前面？ 每次进去的时候先查看cookie 如果有就把记录拿出来 如果没有就返回一个空的数组并执行下面的代码***********************/
        $data = isset($_COOKIE['display_History']) ? unserialize($_COOKIE['display_History']):array();
        //把最新浏览的id 放在数组的最前面 最近浏览的显示就越靠前
        array_unshift($data,$gid);
        //然后在去重
        $data = array_unique($data);
        //转化为字符串 在数据库查数据的时候 保持这里的顺序 不然就无法查出最新浏览记录
        $data = implode(',',$data);
        //只保留6个浏览记录
        //数组的截取函数 array_slice（数组,开始位置，个数(和字符串截取不同 这里第三个参数是个数)）
        if(count($data) > 6){
            $data = array_slice($data,0,6);
        }
        //得到数据之后再把这个数据存回cookie     第一个参数是cookie名 第二个数数据 第三个是时间  第四个参数是存放到哪里 一般都是项目的根目录
        setcookie('display_History',serialize($data),time() + 30 * 86400,'/');  //这里的时间是 当前时间+一个月的时间
        /**
         * 最后当刷新页面的时候 把存放在数组的商品id对应的商品数据取出来显示在页面
         */
        $gModel = D('Goods');
        $gaDate = $gModel->field('id,goods_name,mid_logo')->where(array(
            'id'=>array('in',$data),
            'is_on_sale'=>array('eq','是'),
        ))->order("FIELD(id,$data)")->select();                //这里主要是双引号
        /**
         * 因为这里是ajax数据 所以要返回json
         */
        echo json_encode($gaDate);
    }

}

